Work-Facts

  • Управление версиями нуггетов сразу во всем решении

Для этого можно внести версию в корневой файл Directory.Packages.props. А внутри проектов писать нуггеты без версий.

<Project>
  <ItemGroup>
    <PackageVersion Include="Newtonsoft.Json" Version="13.0.1" />
    <PackageVersion Include="Serilog" Version="2.10.0" />
  </ItemGroup>
</Project>
  • Для того чтобы во время тестирования протестировать интернал класс, можно использовать атрибуты сборки. Один из них:
using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("YourTestProjectName")]

IGrouping

Является результатом работы GroupBy, можно итерироваться, хранит ключ группы и список элементов группы

GUID IN DB

GUID и UUID используют алгоритм именно байтовой генерации, а строки которые мы видим, это результат интерпретации байтов в алфавит из 16ти символов 0-9 A-F, а значит на олин символ уходит половина байта

Таким образом ключ состоящий из 32 символов весит 16 байт изначально
Но, если его сохранять в БД как строку то он начнет весить уже как Unicode строка, а значит будет весить как минимум 32 байта.
Таким образом, выгоднее сохранять в бд специальным типом UUID, а не строкой

Single(it => some(it)) vs First(it => some(it))

Single возвращает единственный элемент, а значит кинет исключение если элементов нет или если их больше чем один
First кидает исключение только если элементов нет